package web.fabrimind.sm.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import web.fabrimind.common.annotation.Excel;
import web.fabrimind.common.core.domain.BaseEntity;

/**
 * 班次排班对象 shift_schedule
 *
 * @author zhihui
 * @date 2025-03-30
 */
public class ShiftSchedule extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 排班ID
     */
    private Long scheduleId;

    /**
     * 班次ID
     */
    @Excel(name = "班次ID")
    private Long shiftId;

    /**
     * 生产线ID
     */
    @Excel(name = "生产线ID")
    private Long lineId;

    /**
     * 车间ID
     */
    @Excel(name = "车间ID")
    private Long workshopId;

    /**
     * 排班日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "排班日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date scheduleDate;

    /**
     * 班组ID
     */
    @Excel(name = "班组ID")
    private Long teamId;

    /**
     * 员工数量
     */
    @Excel(name = "员工数量")
    private Long employeeCount;

    /**
     * 计划产出
     */
    @Excel(name = "计划产出")
    private BigDecimal planOutput;

    /**
     * 实际产出
     */
    @Excel(name = "实际产出")
    private BigDecimal actualOutput;

    /**
     * 状态（0正常 1停用）
     */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /**
     * 删除标志（0代表存在 1代表删除）
     */
    private String delFlag;

    /**
     * 生产线名称
     */
    @Excel(name = "生产线名称")
    private String lineName;

    /**
     * 车间名称
     */
    @Excel(name = "车间名称")
    private String workshopName;


    /**
     * 班次名称
     */
    @Excel(name = "班次名称")
    private String shiftName;


    /**
     * 班次开始时间
     */
    @JsonFormat(pattern = "HH:mm:ss")
    @Excel(name = "班次开始时间", width = 30, dateFormat = "HH:mm:ss")
    private Date startTime;

    /**
     * 班次结束时间
     */
    @JsonFormat(pattern = "HH:mm:ss")
    @Excel(name = "班次结束时间", width = 30, dateFormat = "HH:mm:ss")
    private Date endTime;

    /**
     * 团队名称
     */
    @Excel(name = "团队名称")
    private String teamName;

    public String getTeamName() {
        return teamName;
    }

    public void setTeamName(String teamName) {
        this.teamName = teamName;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public String getShiftName() {
        return shiftName;
    }

    public void setShiftName(String shiftName) {
        this.shiftName = shiftName;
    }


    public String getWorkshopName() {
        return workshopName;
    }

    public void setWorkshopName(String workshopName) {
        this.workshopName = workshopName;
    }

    public String getLineName() {
        return lineName;
    }

    public void setLineName(String lineName) {
        this.lineName = lineName;
    }

    public void setScheduleId(Long scheduleId) {
        this.scheduleId = scheduleId;
    }

    public Long getScheduleId() {
        return scheduleId;
    }

    public void setShiftId(Long shiftId) {
        this.shiftId = shiftId;
    }

    public Long getShiftId() {
        return shiftId;
    }

    public void setLineId(Long lineId) {
        this.lineId = lineId;
    }

    public Long getLineId() {
        return lineId;
    }

    public void setWorkshopId(Long workshopId) {
        this.workshopId = workshopId;
    }

    public Long getWorkshopId() {
        return workshopId;
    }

    public void setScheduleDate(Date scheduleDate) {
        this.scheduleDate = scheduleDate;
    }

    public Date getScheduleDate() {
        return scheduleDate;
    }

    public void setTeamId(Long teamId) {
        this.teamId = teamId;
    }

    public Long getTeamId() {
        return teamId;
    }

    public void setEmployeeCount(Long employeeCount) {
        this.employeeCount = employeeCount;
    }

    public Long getEmployeeCount() {
        return employeeCount;
    }

    public void setPlanOutput(BigDecimal planOutput) {
        this.planOutput = planOutput;
    }

    public BigDecimal getPlanOutput() {
        return planOutput;
    }

    public void setActualOutput(BigDecimal actualOutput) {
        this.actualOutput = actualOutput;
    }

    public BigDecimal getActualOutput() {
        return actualOutput;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("scheduleId", getScheduleId())
                .append("shiftId", getShiftId())
                .append("lineId", getLineId())
                .append("workshopId", getWorkshopId())
                .append("scheduleDate", getScheduleDate())
                .append("teamId", getTeamId())
                .append("employeeCount", getEmployeeCount())
                .append("planOutput", getPlanOutput())
                .append("actualOutput", getActualOutput())
                .append("status", getStatus())
                .append("remark", getRemark())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("delFlag", getDelFlag())
                .append("lineName", getLineName())
                .append("workshopName", getWorkshopName())
                .append("shiftName", getShiftName())
                .append("startTime", getStartTime())
                .append("endTime", getEndTime())
                .append("teamName", getTeamName())
                .toString();
    }
}
